草庐IT

Java HotSpot 枚举开销

全部标签

Java 枚举矫枉过正?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭8年前。Improvethisquestion我经常遇到这样的情况,我需要一个可以表示为简单枚举类型的类的变量,例如:privateenumPageOrder{DOWN_THEN_OVER,OVER_THEN_DOWN};如果在包含变量的类中声明枚举类型,那么我必须使用限定名称MyClass.PageOrder,这不太舒服。但是,如果我创建一个新类,我将拥有一个仅用于简单枚举声明的类,这对我来说似乎有点过分了。因此,我经常使用整数而不

java - javadoc 中的枚举排序

枚举的Javadoc始终使用字母顺序显示其常量。有可能改变吗?例如,javadocforjava.time.DayOfWeek如果常量不显示为FRIDAY、MONDAY、SATURDAY、SUNDAY、THURSDAY、TUESDAY、WEDNESDAY...,看起来会更好。 最佳答案 默认的HTMLdoclet对其成员的摘要进行排序。Collections.sort(members);来自/com/sun/tools/doclets/internal/toolkit/builders/MemberSummaryBuilder.ja

Javac 无法在具有公共(public)枚举的静态嵌套类上编译注释

我遇到了以下javac编译失败,其中javac无法识别具有公共(public)枚举的静态嵌套类上的注释。一旦我将枚举移出静态嵌套类,编译错误就得到解决。有谁知道为什么javac失败?这是一个java编译器错误吗?还是有我不知道的Java细微差别?下面是一个独立的测试用例。编译失败:packagetest;importtest.AnnotationBug.NestedClassWithEnum.ParticipantType;importlombok.Data;importlombok.NoArgsConstructor;importcom.googlecode.objectify.an

java - 类中声明的枚举类型是隐式静态的吗?

这个问题在这里已经有了答案:InJava,areenumtypesinsideaclassstatic?(2个答案)关闭6年前。classCoffee{enumCoffeeSize{BIG,HUGE,OVERWHELMING}CoffeeSizesize;}classCoffeeTest{publicstaticvoidmain(String[]args){Coffeedrink=newCoffee();drink.size=Coffee.CoffeeSize.BIG;}}Coffee.CoffeeSize.BIG:我只需使用类名Coffee即可获得CoffeeSize。当我认为枚举类

java - 是否有用于在 Eclipse 中为 Java 枚举生成 switch 语句的模板或其他东西?

在Eclipse中是否有用于为Java枚举生成switch语句的模板或其他东西?这样当我得到一个枚举并且我想要一个包含所有值的switch时,我就不必自己写所有的东西了吗? 最佳答案 肯定有,至少在3.5中是这样。从这样的事情开始:switch(a.getType()){}您需要做的就是单击switch关键字并按CTRL+1。您应该会看到一个下拉菜单,其中包含“添加缺失的案例陈述”选项 关于java-是否有用于在Eclipse中为Java枚举生成switch语句的模板或其他东西?,我们在

java - Java序列化如何保证枚举的一致性?

当我序列化一个对象时,我可以在类级别使用serialVersionUID机制来保证两种类型的兼容性。但是,当我序列化枚举值的字段时会发生什么?有没有办法确保枚举类型在序列化和反序列化之间没有被操作?假设我有一个像OperationResult{SUCCESS,FAIL}这样的枚举,以及一​​个正在序列化的对象中名为“result”的字段。我如何确保,当对象被反序列化时,即使有人恶意颠倒了两者,结果仍然是正确的?(假设枚举在别处声明为静态枚举)出于好奇,我想知道-我使用jar级身份验证来防止操纵。 最佳答案 发件人:http://ww

java - 我可以在 Java 枚举上使用构建器模式吗

我正在重写一些代码,我已经决定了重新创建类的方式,因为有固定数量的工作表,我将它们创建为枚举。这是基于构建器模式与伸缩构造器的可读性的决定。我的代码获取了一些.xls文件,添加了标题(并从其他.xls文件中读取了一些)和一些子表。然后,它以特定方式将各种这些工作表合并在一起,以在主Excel工作簿上制作标签。我的问题是一些工作簿选项卡采用不同数量的工作表作为参数。我正在尝试应用构建器模式。这是我正在尝试编写的代码:publicenumworkBookSheet{mySheet1("Name1","mainSheet1.xls",true,1).addSubSheet("pathToSu

Java 枚举 : Refactoring switch statements 'constant expression required' compile error?

我有一个类为我的应用程序声明常量publicclassGroupConstants{..publicstaticfinalintINTEGER_VALUE=1;publicstaticfinalintLONG_VALUE=2;publicstaticfinalintSTRING_VALUE=3;..}代码中有一组switch语句privatestaticObjectgetValue(StringstringValue,Parameterparameter)throwsInvalidPatternException{Objectresult=null;switch(parameter.g

【C语言】位段,枚举和联合体详解

 目录1.位段1.1什么是位段1.2位段的内存分配1.3位段的跨平台问题2.枚举2.1枚举类型的定义2.2枚举的优点3.联合(共用体)3.1联合类型的定义3.2联合的特点3.3联合大小的计算1.位段1.1什么是位段位段的声明和结构体是类似的,有两个不同:1.位段的成员必须是int、unsignedint或signedint。2.位段的成员名后边有一个冒号和一个数字。比如:structA{ int_a:2; int_b:5; int_c:10; int_d:30;};A就是一个位段类型。那位段A的大小是多少?printf("%d\n",sizeof(structA)); 在VS上位段A的大小是8

java - 为什么这个枚举代码是对静态字段的非法引用?

此代码无法编译,因为存在对静态字段的非法引用。publicenumFoo{A,B;privateFoo[]foos=newFoo[]{Foo.A};}你不应该能够从非静态字段初始化器访问静态字段吗?例如:publicclassFoo{staticintA;privateint[]foos=newint[]{Foo.A};}这编译得很好。请注意,在第一个示例中将foos设置为静态编译。 最佳答案 查看Java语言规范,第三版,第8.9节http://java.sun.com/docs/books/jls/third_edition/h